home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 1995 #5 & #6
/
Amiga Plus CD - 1995 - No. 5 and 6.iso
/
pd
/
serien
/
purity
/
nr.42
/
disklabel
/
disklabel.p
< prev
next >
Wrap
Text File
|
1995-01-06
|
14KB
|
453 lines
{ DiskLabel: schnelles und nettes Bedrucken von 3.5" 70x69 Disketten-
etiketten. (fontsensitiv...) FREEWARE (siehe DOK)
Version: 1.8
Sprache: KP/MP3 OS3.1-Includes
Autor: PackMAN
Falk Zühlsdorff
Lindenberg 66
98693 Ilmenau
email: ai036@rz.tu-ilmenau.de }
PROGRAM DiskLabel;
USES DruckAnwendung,BATTCLOCKLIGHT;
TYPE TextType = array[0..28] OF String[14];
tabfeld = array[0..19] of Integer;
VAR {---------------------------- Win ----------------------------}
Win : ^Window;
NWTags : array[1..12] OF tagitem;STATIC;
msg : ^IntuiMessage;
akt : ^Gadget;
Code : Byte;STATIC;
{------------------------- HilfsVARs --------------------------}
dummy : long;STATIC;
ex,bdummy : boolean;STATIC;
tab : tabfeld;STATIC;
{----------- die einzelnen Gadgets und ihre HilfsVARs ---------}
ng : NewGadget;STATIC;
g : array[0..15] OF p_Gadget;STATIC;
Tags : array[0..11,0..5] OF TagItem;
StrInfo : p_StringInfo;
StrExt : p_StringExtend;
Tx : TextType;STATIC;
CyLa : array[0..28] of string[3];STATIC;
cfeld : array[0..29] OF STR; {@-Gad}
STx : array[0..9] OF string[36];STATIC;
gedr1,gedr2 : boolean;STATIC;
checked : array[0..1] OF boolean;STATIC;
cycleNr,i : byte;STATIC;
{---------------------------------------------------------------------}
PROCEDURE InfoLine;
CONST up:=chr(10);
BEGIN
dummy:=RTReq('Information',
'Etikettendruck (3.5"/ 70x69 mm)'+up+up+
'Erstellt in KickPascal 2.12/OS3.1'+up+up+
'FREEWARE'+up+up+
'© & P by PackMAN'+up+
'c/o Falk Zühlsdorff'+up+
'Lindenberg 66'+up+
'D-98693 Ilmenau / Thüringen'+up+up+
'Internet: ai036@rz.tu-ilmenau.de'+up+up+
'Reqtools.library © by N.François',
'_OK',1,Win);
END;
{---------------------------------------------------------------------}
PROCEDURE Neu;
BEGIN
STx[0]:='';
STx[9]:='';
FOR i:=2 TO 7 DO STx[i]:='';
GT_SetGadgetAttrsA(g[0],Win,NIL,^Tags[0,3]);
FOR i:=2 TO 7 DO GT_SetGadgetAttrsA(g[i],Win,NIL,^Tags[i,3]);
GT_SetGadgetAttrsA(g[9],Win,NIL,^Tags[9,3]);
END;
{---------------------------------------------------------------------}
PROCEDURE GetStrGaddata; {my fantastic methode}
BEGIN
FOR i:=0 TO 9 DO
BEGIN
StrInfo:=g[i]^.SpecialInfo;
STx[i]:=StrInfo^.buffer;
END;
END;
{--------------------------------------------------------------------}
PROCEDURE Druck;
VAR RTPl,x,j : long;STATIC;
prtstr : string;
BEGIN
RTPl:=RTReq('DiskLabel',
'Drucken mit NLQ','_JA|_Nein|_STOP',Reqpos_Pointer,Win);
IF RTPl=0 THEN exit;
SetPoi(Win);
GetStrGaddata;
IF NOT OpenPrt('DiskLabel',Win) THEN BEGIN ClearPoi(Win); exit; END;
IF NOT GetPRTPrefs THEN BEGIN ClosePrt(Win); exit;END;
IF NOT PrtCheck('DiskLabel',Win) THEN exit;
CMDLn(''); {must set if you`ll set
the old PrinterPrefs}
PrtCom(aRin,0,0,0,0); {init}
PrtCom(aVERP1,0,0,0,0); {1/6 "}
IF RTPl=1 THEN PrtCom(aDEN2,0,0,0,0) {NLQ}
ELSE PrtCom(aDEN1,0,0,0,0); {Draft}
PrtCom(aPROP1,0,0,0,0); {prop. off}
PrtCom(aSLRM,3,80,0,0); {Rand}
PrtCom(aSHORP4,0,0,0,0); {Fine}
PrtCom(aSUS2,0,0,0,0); {Superscript}
prtstr:=STx[0]; {Kante}
IF checked[0] AND (STx[9]<>'')
THEN
BEGIN
x:=34-strlen(STx[0]);
FOR i:=0 TO x DO prtstr:=prtstr+' ';
prtstr:=prtstr+'Nr: '+STx[9];
END;
CMDLn(prtstr);
CMDLn('');
PrtCom(aSHORP3,0,0,0,0); {Fine off}
PrtCom(aSUS1,0,0,0,0); {Superscript off}
PrtCom(aSHORP6,0,0,0,0); {Breit}
x:=TRUNC((13-strlen(STx[1]))/2); {Verwendung}
prtstr:='';
FOR i:=1 TO x DO prtstr:=prtstr+' ';
prtstr:=prtstr+STx[1];
CMDLn(prtstr);
CMDLn('');
PrtCom(aSHORP5,0,0,0,0); {Breit off}
PrtCom(aSHORP0,0,0,0,0); {Pica}
FOR i:=2 TO 7 DO
BEGIN
prtstr:='';
IF STx[i]<>''
THEN
BEGIN
x:=TRUNC((25-strlen(STx[i]))/2); {Zeile 1..6}
FOR j:=1 TO x DO prtstr:=prtstr+' ';
prtstr:=prtstr+STx[i];
END;
CMDLn(Prtstr);
END;
CMDLn('');
prtstr:='';
IF (checked[0]) AND (STx[9]<>'')
THEN
BEGIN
IF checked[1]
THEN
BEGIN
x:=17-strlen(STx[8]); {Date}
prtstr:=STx[8];
FOR i:=1 TO x DO prtstr:=prtstr+' ';
END
ELSE prtstr:=' ';
prtstr:=prtstr+'Nr: '+STx[9]; {Nr}
END
ELSE
IF checked[1] THEN prtstr:=STx[8];
CMDLn(prtstr);
SetPRTPrefs; {old Prefs}
ClosePrt(Win);
END;
{--------------------------------------------------------------------}
PROCEDURE cycle(key:boolean);
BEGIN
IF key
THEN
BEGIN
IF gedr1 OR gedr2
THEN
IF cycleNr=0 THEN cycleNr:=28
ELSE DEC(cycleNr)
ELSE
IF cycleNr=28 THEN cycleNr:=0
ELSE INC(cycleNr);
Tags[10]:=TagItem(GTCY_Active,cycleNr);
GT_SetGadgetAttrsA(g[13],Win,NIL,^Tags[10]);
END
ELSE cycleNr:=Code;
STx[1]:=Tx[cycleNr];
GT_SetGadgetAttrsA(g[1],Win,NIL,^Tags[1,3]);
END;
{--------------------------------------------------------------------}
PROCEDURE check(was:byte);
BEGIN
IF checked[was] THEN checked[was]:=false {0: Datum, 1: DiskNummer}
ELSE checked[was]:=true;
END;
{--------------------------------------------------------------------}
PROCEDURE Ende;
BEGIN
dummy:=RTReq('DiskLabel',
'Programm beenden ?','_JA|_Zurück',Reqpos_Pointer,Win);
IF dummy=1 THEN ex:=true;
END;
{--------------------------------- MAIN -----------------------------}
BEGIN
IF NOT V37
THEN
BEGIN
ErrorReq('Benötigt min. OS2 / needs min. OS2','Yep',NIL);
exit;
END;
IF NOT OpenReqtools THEN exit;
IF NOT Fontsensitiv('DiskLabel',44,25,true) THEN exit;
cycleNr:=0;
checked[0]:=true;checked[1]:=true;
FOR i:=0 TO 9 DO STx[i]:='';
ex:=getbattclockL;
IF battclockdate<>'' THEN STx[8]:=battclockdate;
FOR i:=0 TO 28 DO
BEGIN
IF i<10 THEN CyLa[i]:='0'+Intstr(i)
ELSE CyLa[i]:=Intstr(i);
cfeld[i]:=^CyLa[i];
END;
cfeld[29]:=NIL;
{MaxChars} {StrGads: Width}
tab:=
tabfeld(33,13,25,25,25,25,25,25,10,4,28,16,28,28,28,28,28,28,13,7);
{ kleines Hilfsfeld um etwas Schreibarbeit zu ersparen, die
40 Byte belegtem Speicher kann man sich noch leisten... }
FOR i:=0 TO 9 DO
BEGIN
Tags[i,0]:=TagItem(GT_Underscore,ord('_')); {StrGads}
Tags[i,1]:=TagItem(GTST_MaxChars,tab[i]);
Tags[i,2]:=TagItem(GA_TabCycle,ord(true));
Tags[i,3]:=TagItem(GTST_String,long(^STx[i]));
Tags[i,4].ti_tag:=Tag_Done;
END;
Tags[10,0]:=TagItem(GTCY_Active,0); {CycleGad}
Tags[10,1]:=TagItem(GTCY_LABELS,long(^cfeld));
Tags[10,2]:=TagItem(GT_Underscore,ord('_'));
Tags[10,3].ti_tag:=Tag_Done;
Tags[11,0]:=TagItem(GT_Underscore,ord('_'));
Tags[11,1]:=TagItem(GTCB_Scaled,ord(true));
Tags[11,2]:=TagItem(GTCB_Checked,ord(true));
Tags[11,3].ti_tag:=Tag_Done; {Checkboxes}
Tags[11,4]:=TagItem(GTCB_Checked,ord(false));
Tags[11,5].ti_tag:=Tag_Done;
Tx:=TextType('_Kante:','_Verwendung:','Zeile _1:','Zeile _2:',
'Zeile _3:','Zeile _4:','Zeile _5:','Zeile _6:',
'D_atum:','Di_sk-Nr:','_Info','_Druck','_Neu','_W',
'_R','_T','','','','','','','','','','','','','');
ng.ng_LeftEdge:=14*xsize;
ng.ng_Height:=ysize+6;
ng.ng_TextAttr:=^txattr;
ng.ng_Flags:=PLACETEXT_LEFT;
ng.ng_VisualInfo:=vi;
ng.ng_UserData:=NIL;
FOR i:=0 TO 9 DO
BEGIN
ng.ng_GadgetText:=Tx[i];
ng.ng_GadgetID:=i;
ng.ng_Width:=xsize*tab[i+10];
ng.ng_TopEdge:=STF+ysize+(i*2*ysize);
pgad:=CreateGadgetA(STRING_KIND,pgad,^ng,^Tags[i]);
g[i]:=pgad;
StrInfo:=g[i]^.SpecialInfo;
StrExt:=StrInfo^.Extension;
StrExt^.ActivePens[1]:=PENs^[HIGHLIGHTTEXTPEN];
END;
tab:=tabfeld(14,24,34, {Button: LeftEdge}
3*ysize+STF, {Cycle: TopEdge}
19*ysize+STF+1, {CheckBox: TopEdge}
17*ysize+STF+1,
7*xsize, {Cycle: Width}
ROUND((ysize+3)*(26/11)), {CheckBox: Width}
ROUND((ysize+3)*(26/11)),
ysize+6, {Cycle: Height}
ysize+3,ysize+3, {CheckBoxes: Height}
CYCLE_KIND,
CHECKBOX_KIND, {Kind`s}
CHECKBOX_KIND,
10,11,11, {Tag-Num`s}
0,0); {Shit}
ng.ng_TopEdge:=STF+22*ysize;
ng.ng_Width:=8*xsize;
ng.ng_Flags:=PLACETEXT_IN;
FOR i:=10 TO 12 DO
BEGIN
ng.ng_LeftEdge:=tab[i-10]*xsize;
ng.ng_GadgetID:=i;
ng.ng_GadgetText:=Tx[i];
pgad:=CreateGadgetA(BUTTON_KIND,pgad,^ng,^Tags[10,2]);
g[i]:=pgad;
END;
ng.ng_Flags:=PLACETEXT_RIGHT;
ng.ng_LeftEdge:=32*xsize;
FOR i:=13 TO 15 DO
BEGIN
ng.ng_TopEdge:=tab[i-10];
ng.ng_GadgetID:=i;
ng.ng_GadgetText:=Tx[i];
ng.ng_Width:=tab[i-7];
ng.ng_Height:=tab[i-4];
pgad:=CreateGadgetA(tab[i-1],pgad,^ng,^Tags[tab[i+2]]);
g[i]:=pgad;
END;
Tx:=TextType('',
'Programmieren','Source .p','Source .c','Source .asm',
'Graphik','Public Domain','PURITY','Text / DTP',
'Utilities','Tools','Anwendung','Kalkulation',
'Datenbank','Daten','Backup','Demo','Sound',
'Module','Disk Mag','Game','Adventure',
'Rollenspiel','Action','Unterhaltung','Simulation',
'Sportspiel','Amiga','DOSe');
STx[1]:=Tx[0];
NWTags[1] :=Tagitem(wa_top,0);
NWTags[2] :=Tagitem(wa_left,0);
NWTags[3] :=Tagitem(wa_width,44*xsize);
NWTags[4] :=Tagitem(wa_height,STF+25*ysize);
NWTags[5] :=Tagitem(wa_activate,ord(true));
NWTags[6] :=Tagitem(wa_smartrefresh,ord(true));
NWTags[7] :=Tagitem(wa_rmbtrap,ord(true));
NWTags[8].ti_tag:=wa_title;
NWTags[8].ti_data:='DiskLabel 1.8 (19.12.94)';
NWTags[9]:=Tagitem(wa_Flags,WFLG_CLOSEGADGET+WFLG_DEPTHGADGET+
WFLG_DRAGBAR);
NWTags[10]:=Tagitem(wa_idcmp,IDCMP_GADGETUP+IDCMP_RAWKEY+
IDCMP_CLOSEWINDOW);
NWTags[11] :=Tagitem(wa_Gadgets,long(glist));
NWTags[12].ti_tag:=tag_done;
Win:=openwindowtaglist(nil,^NWTags[1]);
IF Win<>NIL
THEN
BEGIN
dummy:=setfont(Win^.RPort,font);
ex:=false;
gedr1:=false;
gedr2:=false;
REPEAT
Msg:=Wait_Port(Win^.UserPort);
Msg:=GT_GetIMsg(Win^.UserPort);
Code:=Msg^.Code;
IF Msg<>NIL THEN
BEGIN
GT_ReplyIMsg(Msg);
CASE Msg^.Class OF
IDCMP_CLOSEWINDOW: Ende;
IDCMP_GADGETUP:
BEGIN
Akt:=Msg^.IAddress;
CASE AKT^.GADGETID OF
0..8: bdummy:=ACTIVATEGADGET(g[AKT^.GADGETID+1],Win,NIL);
10: InfoLine;
11: Druck;
12: Neu;
13: Cycle(false);
14,15: Check(Akt^.GadgetID-14);
ELSE;END;
END;
IDCMP_RAWKEY:
BEGIN
CASE (Code AND $7f) OF
$60: IF (Code AND $80)=0
THEN gedr1:=true ELSE gedr1:=false;
$61: IF (Code AND $80)=0
THEN gedr2:=true ELSE gedr2:=false;
ELSE
CASE Msg^.code OF
$27: bdummy:=ACTIVATEGADGET(g[0],Win,NIL); {K Kante}
$34: bdummy:=ACTIVATEGADGET(g[1],Win,NIL); {V Verw.}
$01: bdummy:=ACTIVATEGADGET(g[2],Win,NIL); {1 Z1}
$02: bdummy:=ACTIVATEGADGET(g[3],Win,NIL); {2 Z2}
$03: bdummy:=ACTIVATEGADGET(g[4],Win,NIL); {3 Z3}
$04: bdummy:=ACTIVATEGADGET(g[5],Win,NIL); {4 Z4}
$05: bdummy:=ACTIVATEGADGET(g[6],Win,NIL); {5 Z5}
$06: bdummy:=ACTIVATEGADGET(g[7],Win,NIL); {6 Z6}
$20: bdummy:=ACTIVATEGADGET(g[8],Win,NIL); {A Datum}
$21: bdummy:=ACTIVATEGADGET(g[9],Win,NIL); {S Disk-Nr}
$11: Cycle(true); { W.}
$13,
$14: BEGIN {Boxes}
Check(Code-$13);
IF checked[Code-$13]
THEN GT_SetGadgetAttrsA(g[Code-5],Win,NIL,
^Tags[11,1])
ELSE GT_SetGadgetAttrsA(g[Code-5],Win,NIL,
^Tags[11,4]);
END;
$17: BEGIN PressButton(Win,g[10]); InfoLine; END;{ I }
$36: BEGIN PressButton(Win,g[12]); Neu; END;{ N }
$22: BEGIN PressButton(Win,g[11]); Druck; END;{ D }
$10, {Q/E/ESC}
$12,
$45: Ende;
ELSE;END;
END;
END;
ELSE;END;
END;
UNTIL ex;
CloseWindow(Win);
END
ELSE dummy:=RTReq('DiskLabel','Kann Oberfläche nicht darstellen.',
'_Argh',ReqPos_TopLeftScr,NIL);
FreeGadgets(glist);
FreeVisualInfo(vi);
Free_Mem(Long(Pointerptr),sizeof(Pointerfeld));
CloseSomeLibs;
IF Utilitybase<>NIL THEN CloseLibrary(UtilityBase);
END.